package com.itheima.controller;

import com.itheima.pojo.Account;
import com.itheima.service.AccountService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import javax.annotation.PostConstruct;
import javax.annotation.PreDestroy;
import javax.annotation.Resource;

/**
 * 控制器( servlet )
 */
@Controller
@Scope("prototype")
// 默认为singleton 单例模式
public class AccountController {

    @PostConstruct
    /**
     * bean初始化时执行
     * - 相当于`<bean>`标签的`init-method`属性
     */
    public void init(){
        System.out.println("创建对象时执行");
    }

    @PreDestroy
    /**
     * bean销毁之前执行
     * - 相当于`<bean>`标签的`destroy-method`属性
     */
    public void destroy(){
        System.out.println("销毁对象时执行");
    }

    /**
     * @Autowired 自动注入 有同一类型的多个对象就会出错
     * @Qualifier 指定名称
     * @Resource  相当于同时指定了@Autowired和@Qualifier,既可以指定名称 又可以根据类型
     */
//    @Autowired
//    @Qualifier(value = "accountServiceImpl02")
    @Resource(name = "accountServiceImpl01")
    private AccountService accountService;


    public void save(Account account) {
            accountService.save(account);
    }
}
